/** 
 * Buffer(缓冲区)
 *    1、  使用Buffer不需要引入模块，直接使用
 *    2、  Buffer的结构和数组很想，操作的方法也和数组类似，因为数组不能存储二进制文件，
 *            所以才有Buffer这个的存在，Buffer就是专门用来存储二进制数据
 *    3、 Buffer当指定大小的时候，是不能再改变的
 * 
 *    4、注意Buffer中的用法
 *           例如： const buf = Buffer.form() 类似这种方法是通过Buffer构造函数调用的
 *                  buf.includes(value[, byteOffset][, encoding])；
 *                  类似这种方法都是通过Buffer的构造函数所实例化的对象调用的
 * 
*/

const str = "我需要转换成为二进制";
// 存数据 只能存二进制的数据
var buf =  Buffer.from(str); //可以直接把字符串转换为二进制数据
console.log(buf.length);   //表示占用内存大小（字节）
console.log(str.length);    //表示字符串的长度，两则是不一样的
console.log(buf);    //from就是需要存数据的值

// 创建一个指定大小的Buffer
var bug1 = Buffer.alloc(10);
    // 通过索引，来操作buf1中的元素
    bug1[0] = 55;
    bug1[5] = 0xF;
    console.log(bug1);
//读数据 读出来的数据在页面或者控制台显示，必定是10进制的数据
    console.log(bug1[0]);
    console.log(bug1[5]);
for(var i = 0; i < bug1.length; i++){
    console.log(bug1[i].toString(2));
}

console.log(buf.toString());
// buf.toString(2) //可以把一个Buffer(二进制数据转换为字符串)
